• php seaslog
  • 日志分析demo
  • 自定义日志模板
  • SeasLog 共将日志分成8个级别
  • SeasLog 日志收集
  • seaslog 时间戳查看
  • php seaslog
    E:\uninote\mynote\basic\web\tests\seaslog.php
    E:\uninote\mynote\basic\runtime\seaslog
    E:\software\programming\php\5.6.30\php_seaslog-1.8.4-5.6-ts-vc11-x64.zip
    安装 Php模块 seaslog
    http://dev.rongyipiao.com/book/1089785219#362
    https://www.imooc.com/qadetail/119739
    eson 日志系统
    关于使用PHP扩展SeasLog日志系统
    http://dev.rongyipiao.com/book/1092917203#281
    官方文档: SeasLog Supports
    https://github.com/SeasX/SeasLog
    ;   注意, 该配置项自1.7.0版本开始有变动。
    ;   在1.7.0版本之前, 该值数字越小,根据级别记的日志越多: 
    ;   0-all 1-debug 2-info 3-notice 4-warning 5-error 6-critical 7-alert 8-emergency
    ;   1.7.0 之前的版本,该值默认为0(所有日志);
    seaslog.level = 8
    SHA-1: 2cde9bd61079f8b464db5536ab306a848dbbd2ec
    * 【更新】- 统一日志系统
    SHA-1: fd89d5794a778b9b09ddcd369ad6fe3276d1f1d3
    * bug- 优化重构seaslog日志系统代码简化
    lv1= lv2= type=todo
    不同的logger如何配置不同的option,如template?
    输出到多个logger? last logger?
    send remote?
    这个是日志记录时间,也就是记录的git push这条命令执行完成后的时间,而不是执行之前的时间:
    简单封装,如果设置到/tmp等地方,还需要权限
    SeasLog::setBasePath(__DIR__ . "/../../../../../runtime/seaslog");
    function slog($content, $params = [], $logger = "default")
    {
        SeasLog::info($content, $params, $logger);
    }

    日志分析demo

    http://localhost:222/tests/seaslog.php
    http://dev.rongyipiao.com/tests/seaslog.php
    这个使用find等shell命令来做的,日志大了会有性能问题。

    自定义日志模板

    很多朋友在使用过程中提到自定义日志模板的需求,于是SeasLog自1.7.2版本开始,拥有了这个能力,允许用户自定义日志的模板, 同时在模板中可以使用SeasLog预置的诸多预设变量,参照预设变量表。
    日志模板说明
    模板默认为:seaslog.default_template = "%T | %L | %P | %Q | %t | %M"
    意味着,默认的格式为{dateTime} | {level} | {pid} | {uniqid} | {timeStamp} | {logInfo}
    如果自定义的格式为:seaslog.default_template = "[%T]:%L %P %Q %t %M"
    那么,日志格式将被自定义为:[{dateTime}]:{level} {pid} {uniqid} {timeStamp} {logInfo}
    预设变量表
    SeasLog提供了下列预设变量,可以直接使用在日志模板中,将在日志最终生成时替换成对应值。
    %L - Level 日志级别。
    %M - Message 日志信息。
    %T - DateTime 如2017-08-16 19:15:02,受seaslog.default_datetime_format影响。
    %t - Timestamp 如1502882102.862,精确到毫秒数。
    %Q - RequestId 区分单次请求,如没有调用SeasLog::setRequestId($string)方法,则在初始化请求时,采用内置的static char *get_uniqid()方法生成的惟一值。
    %H - HostName 主机名。
    %P - ProcessId 进程ID。
    %D - Domain:Port 域名:口号,如www.cloudwise.com:8080; Cli模式下为cli。
    %R - Request URI 请求URI,如/app/user/signin; Cli模式下为入口文件,如CliIndex.php。
    %m - Request Method 请求类型,如GET; Cli模式下为执行命令,如/bin/bash。
    %I - Client IP 来源客户端IP; Cli模式下为local。取值优先级为:HTTP_X_REAL_IP > HTTP_X_FORWARDED_FOR > REMOTE_ADDR
    %F - FileName:LineNo 文件名:行号,如UserService.php:118。
    %U - MemoryUsage 当前内容使用量,单位byte。调用zend_memory_usage。
    %u - PeakMemoryUsage 当前内容使用峰值量,单位byte。调用zend_memory_peak_usage。
    %C - TODO Class::Action 类名::方法名,如UserService::getUserInfo。
    mynote:
    ;日志格式模板 默认"%T | %L | %P | %Q | %t | %M"
    seaslog.default_template = "%T | %L | %R | %C | %F | %Q | %M"
    datetime level uri class filename reqid message
    封装之后,需要修改这个(堆栈回溯一层):
    seaslog.recall_depth = 1
    lv1= lv2= type=

    SeasLog 共将日志分成8个级别

    SEASLOG_DEBUG
    "DEBUG" - debug信息、细粒度信息事件 8
    SEASLOG_INFO
    "INFO" - 重要事件、强调应用程序的运行过程 7
    SEASLOG_NOTICE
    "NOTICE" - 一般重要性事件、执行过程中较INFO级别更为重要的信息 6
    SEASLOG_WARNING
    "WARNING" - 出现了非错误性的异常信息、潜在异常信息、需要关注并且需要修复 5
    SEASLOG_ERROR
    "ERROR" - 运行时出现的错误、不必要立即进行修复、不影响整个逻辑的运行、需要记录并做检测 4
    SEASLOG_CRITICAL
    "CRITICAL" - 紧急情况、需要立刻进行修复、程序组件不可用 3
    SEASLOG_ALERT
    "ALERT" - 必须立即采取行动的紧急事件、需要立即通知相关人员紧急修复 2
    SEASLOG_EMERGENCY
    "EMERGENCY" - 系统不可用 1

    SeasLog 日志收集

    https://github.com/SeasX/SeasLog/blob/master/Specification/SeasLog_Rsyslog_ELK_zh.md
    lv1= lv2= type=

    seaslog 时间戳查看

    E:\uninote\mynote\basic\runtime\seaslog_cmd\default\queue-log.sh
    tailf 20210325.log|awk '{gsub(/^[[:digit:]]+\.[[:digit:]]+/,strftime("%Y-%m-%d %H:%M:%S",$NR));print}'
    tail -f 20210325.log|awk -F '-||-' '{gsub(/^[[:digit:]]+\.[[:digit:]]+/,strftime("%Y-%m-%d %H:%M:%S",$1));print}'
    # 最终版:
    # 不存在则先创建,避免闪退 & if 判断
    [ ! -f `date "+%Y%m%d"`.log ] && touch `date "+%Y%m%d"`.log
    tail -f `date "+%Y%m%d"`.log|awk -F '-||-' '{if ($1 >=0){gsub(/^[[:digit:]]+\.[[:digit:]]+/,strftime("%Y-%m-%d %H:%M:%S",$1))};print}'